package xyz.xtt.asset.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;

import xyz.xtt.asset.api.enums.AssetNoStatusEnum;
import xyz.xtt.asset.api.enums.AssetNoTypeEnum;
import xyz.xtt.asset.client.request.AssetNoInfoRequest;
import xyz.xtt.asset.client.response.AssetNoResponse;
import xyz.xtt.asset.client.response.TblAssetNoDto;
import xyz.xtt.asset.entity.TblAssetNo;
import xyz.xtt.asset.vo.AssetNoMake;
import xyz.xtt.pay.client.response.TblPayOrderDto;

/**
 * <p>
 * 资产编号表 服务类
 * </p>
 *
 * @author daveafei
 * @since 2025-03-17
 */
public interface ITblAssetNoService extends IService<TblAssetNo> {

	List<TblAssetNoDto> getNFTNoInfo(AssetNoInfoRequest assetNoInfoRequest);

	void updateAssetCardReceiveState(TblPayOrderDto payOrderDto);

	/**
	 * 锁定资产编号
	 * 
	 * @param assetNoMake
	 * @return
	 */
	void syncAssetNoLock(AssetNoMake assetNoMake);

	/**
	 * 解锁资产编号
	 * 
	 * @param assetNoMake
	 * @return
	 */
	void syncAssetNoUnLock(AssetNoMake assetNoMake);

	void sendAssetCard(long assetNoId, long receiverId);

	/**
	 * 取消资产编号锁定
	 * 
	 * @param assetNoMake
	 * @return
	 */
	void syncAssetLockCancel(AssetNoMake assetNoMake);

	void rMintAssetNo(Long oldAssetId, Long appUserId, Long asseId, Long rootAssetId);

	List<TblAssetNo> getAssetNoByTrans(long transactionId, AssetNoTypeEnum asset, AssetNoStatusEnum normal);

	AssetNoResponse assetNoInfoWithNoId(Long noId);

	/**
	 * 上架资产，上架资产下所有编号
	 * 
	 * @param assetId
	 * @param uid
	 */
	void on(Long assetId, Long uid);

	void off(Long assetId, Long uid);
	
    List<TblAssetNo> getListByAssetId(Long assetId, Long uid, Long limit);

}
